listview: Pass the CSS name of listitems to the manager
authorBenjamin Otte <otte@redhat.com>
Sat, 12 Oct 2019 11:16:54 +0000 (13:16 +0200)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 30 May 2020 23:26:45 +0000 (19:26 -0400)
... instead of hardcoding "row".

gtk/gtkgridview.c
gtk/gtklistitemmanager.c
gtk/gtklistitemmanagerprivate.h
gtk/gtklistview.c

index fd3c94f2ddf59b5f95f857220e7528ab06bc957e..3f3ecc72dadee447ba9b178673936c16dae72bf5 100644 (file)
@@ -476,7 +476,7 @@ cell_augment (GtkRbTree *tree,
 static void
 gtk_grid_view_init (GtkGridView *self)
 {
-  self->item_manager = gtk_list_item_manager_new (GTK_WIDGET (self), Cell, CellAugment, cell_augment);
+  self->item_manager = gtk_list_item_manager_new (GTK_WIDGET (self), "flowboxchild", Cell, CellAugment, cell_augment);
 
   self->min_columns = 1;
   self->max_columns = DEFAULT_MAX_COLUMNS;
index fde93c9708c5de94015496e00f90aa47fa9a4935..05464d9ef73d742d2364a1b92fb7a7bde7115d2a 100644 (file)
@@ -33,6 +33,7 @@ struct _GtkListItemManager
   GtkWidget *widget;
   GtkSelectionModel *model;
   GtkListItemFactory *factory;
+  const char *item_css_name;
 
   GtkRbTree *items;
   GSList *trackers;
@@ -108,6 +109,7 @@ gtk_list_item_manager_clear_node (gpointer _item)
 
 GtkListItemManager *
 gtk_list_item_manager_new_for_size (GtkWidget            *widget,
+                                    const char           *item_css_name,
                                     gsize                 element_size,
                                     gsize                 augment_size,
                                     GtkRbTreeAugmentFunc  augment_func)
@@ -122,6 +124,7 @@ gtk_list_item_manager_new_for_size (GtkWidget            *widget,
 
   /* not taking a ref because the widget refs us */
   self->widget = widget;
+  self->item_css_name = g_intern_string (item_css_name);
 
   self->items = gtk_rb_tree_new_for_size (element_size,
                                           augment_size,
@@ -926,7 +929,7 @@ gtk_list_item_manager_acquire_list_item (GtkListItemManager *self,
   g_return_val_if_fail (GTK_IS_LIST_ITEM_MANAGER (self), NULL);
   g_return_val_if_fail (prev_sibling == NULL || GTK_IS_WIDGET (prev_sibling), NULL);
 
-  result = gtk_list_item_new ("row");
+  result = gtk_list_item_new (self->item_css_name);
   gtk_list_item_factory_setup (self->factory, result);
 
   item = g_list_model_get_item (G_LIST_MODEL (self->model), position);
index c83fc7d92f6aaeeb180dd9910e53d790683f3a9b..a41ea844722889b2c676f79683c77b9c88882148 100644 (file)
@@ -57,11 +57,12 @@ struct _GtkListItemManagerItemAugment
 GType                   gtk_list_item_manager_get_type          (void) G_GNUC_CONST;
 
 GtkListItemManager *    gtk_list_item_manager_new_for_size      (GtkWidget              *widget,
+                                                                 const char             *item_css_name,
                                                                  gsize                   element_size,
                                                                  gsize                   augment_size,
                                                                  GtkRbTreeAugmentFunc    augment_func);
-#define gtk_list_item_manager_new(widget, type, augment_type, augment_func) \
-  gtk_list_item_manager_new_for_size (widget, sizeof (type), sizeof (augment_type), (augment_func))
+#define gtk_list_item_manager_new(widget, item_css_name, type, augment_type, augment_func) \
+  gtk_list_item_manager_new_for_size (widget, item_css_name, sizeof (type), sizeof (augment_type), (augment_func))
 
 void                    gtk_list_item_manager_augment_node      (GtkRbTree              *tree,
                                                                  gpointer                node_augment,
index 27bac8e4840ae157278cb29d754af5f784b254f5..87a80513de82a22c18e5d6238bddfcf5e0617ef8 100644 (file)
@@ -1012,7 +1012,7 @@ gtk_list_view_class_init (GtkListViewClass *klass)
 static void
 gtk_list_view_init (GtkListView *self)
 {
-  self->item_manager = gtk_list_item_manager_new (GTK_WIDGET (self), ListRow, ListRowAugment, list_row_augment);
+  self->item_manager = gtk_list_item_manager_new (GTK_WIDGET (self), "row", ListRow, ListRowAugment, list_row_augment);
   self->anchor = gtk_list_item_tracker_new (self->item_manager);
   self->selected = gtk_list_item_tracker_new (self->item_manager);
   self->orientation = GTK_ORIENTATION_VERTICAL;